<?php

class Roles_Model_Roles extends Model_Cna {
    const CODPADRE_ADMIN = 1;
    const CODPADRE_SEDE = 3;
    const CODPADRE_CONSEJERO = 6;
    const CODPADRE_PAR = 8;
    const CODPADRE_VERIFICADOR = 10;
    const CODPADRE_VIATICOSYHONORARIOS = 12;
    const CODPADRE_COMPLETITUD = 14;
	
	/**
	 * Devuelve un arreglo del listado de roles
	 * @return array
	 */
	public function getRoles() {
		$rolesTable = new Roles_Model_DbTable_Roles();
		return $rolesTable->getRoles();
	}
	
	/**
	 * Almacena los datos del rol en la base de datos
	 * @param array $datos Los datos del rol
	 */
	public function guardarRol($datos) {
		$rolesTable = new Roles_Model_DbTable_Roles();
		
//		unset($datos["btnSubmit"]);
		if(isset($datos["codrol"]) && !empty($datos["codrol"])) {
			$row = $rolesTable->find($datos["codrol"])->current();
			$row->setFromArray($datos)->save();
		} else {
			unset($datos["codrol"]);
			return $rolesTable->createRow($datos)->save();
		}
		
	}
	
	/**
	 * Carga los datos de un rol
	 * @param int $codrol
	 * @return Array con los datos del rol
	 */
	public function cargarDatos($codrol){
		$rolesTable = new Roles_Model_DbTable_Roles();
		return $rolesTable->find($codrol)->current()->toArray();
	}
	
	/**
	 * Eliminar rol
	 * @param $codrol
	 * @return int El número de filas eliminadas
	 */
	public function eliminar($codrol){
		$rolesTable = new Roles_Model_DbTable_Roles();
		return $rolesTable->find($codrol)->current()->delete();
	}
	
	/**
	 * Obtiene los roles a los que se encuentra asignado un usuario
	 * @param int $codusuario
	 * @return array
	 */
	public function getRolesPorUsuario($codusuario) {
		$rolesTable = new Roles_Model_DbTable_Roles();
		return $rolesTable->getRolesPorUsuario($codusuario);
	}
	
	/**
	 * Devuelve un arreglo de listado de perfiles (hijos de roles)
	 * @param int $codrol
	 * @return array
	 */
	public function getPerfiles($codrol) {
		$rolesTable = new Roles_Model_DbTable_Roles();
		return $rolesTable->getPerfiles($codrol);
	}
	
	/**
	 * Obtener rol
	 * @param $codrol
	 * @return Array El nombre del rol
	 */
	public function getRol($codrol){
		$rolesTable = new Roles_Model_DbTable_Roles();
		return $rolesTable->find($codrol)->current();
	}
	
	public function getRolesPerfil(){
		$rolesTable = new Roles_Model_DbTable_Roles();
		$arrRolesPerfil=array();
		$rolesPerfil=$rolesTable->getRolesPerfil();
		for($i=0;$i<count($rolesPerfil);$i++){
			$codrol=$rolesPerfil[$i]["codrol"];
			$arrRolesPerfil[$codrol]=$rolesPerfil[$i]["nombrerol"];
		}
		return $arrRolesPerfil;
	}
	
	/**
	 * Obtiene los roles a los que se encuentra asignado un usuario en una arreglo asociativo
	 * @param int $codusuario
	 * @return array
	 */
	public function getRolesPorUsuarioAsociativo($codusuario) {
		$arrRolesPorUsuario=array();
		$RolesPorUsuario=$this->getRolesPorUsuario($codusuario);
		for($i=0;$i<count($RolesPorUsuario);$i++){
			$codrol=$RolesPorUsuario[$i]["codrol"];
			$arrRolesPorUsuario[$codrol]=$RolesPorUsuario[$i]["nombrerol"];
		}
		return $arrRolesPorUsuario;
	}
	
	function roles_editar_usuarios_new($codusuario,$arregloRolesMostrar,$arregloRolesActuales){
		$frontController = Zend_Controller_Front::getInstance();
		$baseUrl=$frontController->getBaseUrl();
		$html ="<table id=\"table_id\" align=\"center\" width=\"600px\" class=\"iceDatTbl\">";
        $html .="  <thead>
            <tr>
              <th>Perfiles</th>
              <th>Permisos</th>
            </tr>
          </thead>
          <tbody>";
        		
		foreach($arregloRolesMostrar as $llave_codrol => $valor_nombrerol){
			$seleccionado = "";
			$ver_permisos = "&nbsp;";
			if (array_key_exists($llave_codrol, $arregloRolesActuales)){
				$seleccionado = "checked";
				$params=App_Util_SafeUrl::encriptar(array("codrol"=>$llave_codrol,"codusuario"=>$codusuario),true);
				$ver_permisos = "<a href=\"{$baseUrl}/usuarios/detalle/perfilfuncional/{$params}\">Permisos perfil</a>";
			}
			$html.="<tr>";
			$html.="<td><input name=\"roles[]\" type=\"checkbox\" value=\"".$llave_codrol."\" ".$seleccionado."> ".$valor_nombrerol."</td>";
			$html.="<td align=right>{$ver_permisos}</td>";
			$html.="</tr>";
		}
		$html.="</tbody>";
		$html.="</table>";
		return $html;
	}
	
	/**
	 * Obtiene los roles a los que se encuentra asignado un usuario en una arreglo columna
	 * @param int $codusuario
	 * @return array
	 */
	public function getRolesPorUsuarioCol($codusuario) {
		$arrRolesPorUsuario=array();
		$RolesPorUsuario=$this->getRolesPorUsuario($codusuario);
		for($i=0;$i<count($RolesPorUsuario);$i++){
			$codrol=$RolesPorUsuario[$i]["codrol"];
			$arrRolesPorUsuario[]=$codrol;
		}
		return $arrRolesPorUsuario;
	}
	
}
